#ifndef SCREENSAVER_H_
#define SCREENSAVER_H_

#include <sigc++/signal.h>
#include <boost/utility.hpp>
#include <boost/shared_ptr.hpp>
#include <glibmm.h>

namespace gpyp {
namespace ss {

class Provider : boost::noncopyable {
private:
  Glib::ustring name_;

public:
  const Glib::ustring &get_name() const;
  virtual bool get_active() const = 0;

protected:
  Provider(const Glib::ustring &name);
  virtual ~Provider();
};
typedef boost::shared_ptr<Provider> RefProvider;

void init();
void uninit();

sigc::signal<void, RefProvider> signal_provider_changed();
RefProvider get_provider();
bool register_provider(RefProvider provider);
bool get_active();

}/* namespace ss */
}/* namespace gpyp */

#endif /*SCREENSAVER_H_*/
